1. Field of Invention
The present invention presented herein relates to integrated circuits. More specifically, the present invention relates to configurable integrated circuits and methods and systems having the present invention incorporated therein.
2. Discussion of Related Art
Recent advancement in the semiconductor industry has led to higher and higher levels of integration in integrated circuits within smaller physical structures. Much of what used to be board level circuitry and even complete systems has now been moved within a single chip in a class of chips known as systems-on-a-chip (SoC). The impetus for incorporating more and more circuitry and functions within single chips include the design goals of reduced size (more functionality within a reduced footprint), more performance (higher operating clock frequency as well as more operations per clock interval), reduced consumption of power (using a lower voltage or current thereby enabling longer battery life or less thermal impact), and targeted market stipulations. The overriding goal, however, is reduced system cost.
One of such SoCs that has recently become possible to manufacture is the concept of network-on-chip (NoC). An NoC embeds a plurality of routers operating on high-speed network signals and a plurality of processing elements (generally known as cores) connected to the routers in a single silicon die. The challenge in testing a SoC, an NoC included, is how to access an embedded core, manipulate a core in a test mode, deliver test vectors to a core to be tested, extract test results from a core, and schedule the testing in such a way as that a test can be carried out within the bounds of various parameters such as a budgeted test time, the thermal or power handling capabilities of the chip or the package, and the capabilities of an automatic test equipment (ATE).
Manufacturing test in semiconductor integrated circuits has evolved over twenty years from fault-graded functional or operational vectors to structural tests such as scan and pattern-generator-based built-in-self-test (BIST). One motivation to move away from testing using functional vectors is related to the long delivery time required to produce and fault-simulate functional vectors as well as the large amount of functional vectors usually required to achieve acceptable quality and to provide coverage for different fault classes. Structural vectors are comparatively much more efficient in delivery time, quality assessment, and are easier to apply. This is especially true in designs that employ embedded IP cores due to the fact that structural vectors are portable, can be delivered with the core and reused, and can be applied to an embedded core through a minimized test interface instead of using the now-untenable approach of providing test-only access pathways to all of the core's functional ports from the final packaged device's pin map.
However, the complexity and size of modern SoC designs have created new challenges in testing, even when structural vectors are used. The design of test access mechanisms (TAM) for optimized access to ports of embedded cores (commonly referred to as a core wrapper) and the scheduling matrix that controls which core receives test vectors at what time is known as DFT (design-for-test) and is carried out at a pre-mask or pre-silicon stage (i.e., during the design development or design creation period) of a creation cycle. Once a DFT architecture (i.e., a test access architecture that enables selection of an individual core, memory, or logic grouping for testing) is established, the test scheduling aspect of a manufacturing test program is accordingly fixed or limited. For example, if eight package pins are used as scan inputs to two different cores and another eight pins are multiplexed to receive the scan outputs of those two cores, it is impossible for the two cores to be tested simultaneously since they share scan data pathways and only one can use the pathways at any given time. In addition, a SoC is tested in a test-mode so that vectors delivered while in a test mode are all interpreted as test vectors. Therefore, it is impossible to test a SoC in-situ in a final system without disrupting its functional operation.
There are other limitations associated with use of structural vectors and such limitations drive DFT architecture decisions. One of such limitations relates to power consumption. Such scan vectors are much more active than functional operational vectors because they often directly toggle flip-flops on each active clock edge. In a normal functional mode, an integrated circuit may be designed to support up to 30% of toggle rate (the number of flip-flops that change state on an active clock edge). In a test mode, however, scan can be applied with a 100% toggle rate (e.g., by shifting the <. . . 010101 . . . > pattern through the scan chain). As a result, a scan vector in a test mode may be partitioned into two operations corresponding to “shift” and “sample”. Since a vector is usually shifted at a much lower frequency, the “shift” data rate scanned into a device that operates at 400 MHz is generally only around 50 MHz or less. However, the “sample” operations may still be carried out at an operational frequency of 400 MHz. Even though test scan architectures may be configured to access only a few cores at a time, the inherent high-toggle or high-frequency vectors may nevertheless exceed the ICs power handling capability, which further limits the testing capability.
Another limitation to an efficient structural test or DFT architecture driver is the number and type of package interface pins that are available. Test scan access has traditionally borrowed functional pins as the test interface because adding dedicated package interface solely for testing is economically abhorrent. So, a scan test architecture is often developed by temporarily assuming operational control of the functional input and output pins. On the input side, parallel connections and blocking gates prevent random toggling of unused or non-targeted logic blocks. On the output side, since there are usually multiplexers that pass only certain targeted data to the output pins, the pins selected for outputting test result must meet the requirements of the targeted scan shift-rate, which, due to power consumption considerations, are relatively slow pins (e.g., in the 50 MHz to 100 MHz range). So, this also further limits the testing capability.
Recently, there have been several innovations in functional data bandwidth management for ICs. One advancement is the use of high-speed interfaces such as LVDS SerDes (Low Voltage Differential Signals that pass through Serializer-Deserializer functions) that support certain defined bus protocols such as PCI-express and operate at gigahertz frequencies with gigabit data rates. Another advancement is the network-on-chip (NoC) that uses similar high-speed network busses and dedicated routers for interconnect between cores within the NoC. These chip and internal interfaces have created new challenges for structural scan-based and pattern-generator-based BIST testing.
One of the most serious challenges relates to devices that have a wealth of high-speed package pins yet very few relatively low-speed pins. Since current scan architectures deliver or shift scan data at much lower frequencies, the scarcity of low-speed pins limits the scan data bandwidth to just a few pins. Having limited test access pins on huge and complex devices results in longer application time, longer testing time, longer scan chains, and ultimately, less flexibility if a scan chain is broken. Similarly, inside a large scale chip such as an NoC that has a plurality of cores interconnected by high-speed busses, providing an adjustable, flexible, or optimal scan data delivery architecture has become a major part of the design consideration.
A key problem relates to how to get scan data from an ATE to a core embedded in an NoC through the few low-speed test connections. Existing ATEs are not made to deliver scan data at G-Bit SerDes speeds through low-speed test connections to the core embedded in an NoC.
An obvious solution is to add more low frequency pins to the chip interface to enable test access and to provide low-speed scan test connections to the embedded cores. But this can be expensive in that it results in selecting a packaging solution with more pins and thus creates a wealth of test-only routes inside of a chip. In addition, this does not address the complexity of creating the internal device architecture needed to configure the delivery and return of scan data to and from the various cores and logic blocks that are supported on-chip.
Another consideration has to do with security. It has long been known in the industry that scan allows resolution of the internal chip architecture to the register level. That is, each bit that exits a scan chain carries direct information about a bit on the scan chain. The fear is that such direct accesses to the scan connections may make it possible to reverse engineer the internal register map and the logic functions. For both this reason and the scan data volume problem, many semiconductor design organizations have applied some form of vector compression based on, e.g., linear-feedback shift-registers (LFSRs), cellular-automata, or ring-counters. The data to be delivered to an embedded logic within a chip is compressed and later uncompressed into a scan vector.
Even though the compressed data takes fewer bits, it still needs to be delivered in much the same manner as uncompressed scan data. Similarly, even though the scan test results from the various embedded cores can be compressed, such information still needs to be delivered to the edge of the device and ultimately to the ATE in much the same manner as uncompressed scan data.
One further consideration with respect to testing physically large SoCs and/or NoCs is the aspect of redundancy or self-repair (there is a direct correlation between die size and the probability of defects). Embedded testing and repair of memory arrays using built-in self-test (BIST) and by re-configuring extra rows and columns has become a well-adopted technology. Testing and repairing a memory with a self-contained test and repair process is a much more efficient method than dedicated external testing, post-processing of test results, and then using a separate step to configure the repair with a fusible link. In a similar manner, chips have been designed to embed redundant logic elements to enable post-silicon repair. However, prior to logic repair, post-processing of test data is required to determine the location of the failure. It is, therefore, similar to the external memory test method in which either a fusible link or a non-volatile memory element (such as flash memory) is required to enable a permanent or semi-permanent repair. However, such repair is limited to failures that occur within areas that have redundant, configurable, or repairable resources. Therefore, due to the required dedicated testing and post-processing, logic self-repair is still not viable as an in situ solution for devices integrated into their end application.